package view.quest
{
import com.greensock.TweenLite;

import core.Language;

import flash.display.MovieClip;

import framework.core.AssetsManager;

import framework.utils.TextUtil;

import values.events.QuestValueEvent;
import values.quest.QuestValue;

/**
 * QuestIconRenderProxy
 * @author jliang
 * 
 */
public class QuestIconRenderProxy extends QuestComponentProxyBase
{
	//==========================================================================
	//  Class constants
	//==========================================================================
	private static const NORMAL_TYPE:String = "normalType";
	private static const NEW_TYPE:String = "newType";
	private static const PROGRESS_TYPE:String = "progressType";
	//==========================================================================
	//  Constructor
	//==========================================================================
	public function QuestIconRenderProxy()
	{
		super();
	}
	//==========================================================================
	//  Properties
	//==========================================================================
	override public function set data(value:QuestValue):void
	{
		super.data = value;
		if (data.isAccepted)
		{
			switchUI(NORMAL_TYPE);
		}
		else
		{
			switchUI(NEW_TYPE);
		}
		
		data.addEventListener(QuestValueEvent.ACCEPT, acceptHandler);
		data.addEventListener(QuestValueEvent.PROGRESS, progressHandler);
		
		skin.addChild(AssetsManager.loadAsset(data.template.getIconPathByKey("normal")));
	}
	//==========================================================================
	//  Overridden methods: ComponentProxy
	//==========================================================================
	override public function parse(target:MovieClip):void
	{
		super.parse(target);
	}
	
	override public function dispose():void
	{		
		data.removeEventListener(QuestValueEvent.ACCEPT, acceptHandler);
		data.removeEventListener(QuestValueEvent.PROGRESS, progressHandler);
		
		super.dispose();
	}
	//==========================================================================
	//  Protected methods
	//==========================================================================
	protected function switchUI(type:String):void
	{
		TweenLite.killTweensOf(this);
		switch (type)
		{
			case NORMAL_TYPE:
				skin.gotoAndStop(1);
				break;
			case NEW_TYPE:
				skin.gotoAndStop(2);
				TextUtil.setText(skin.newTip.holder.label, Language.getText("@quest_new_tip_label"));
				break;
			case PROGRESS_TYPE:
				skin.gotoAndStop(3);
				TextUtil.setText(skin.progressTip.holder.label, Language.getText("@quest_progress_tip_label"));
				TweenLite.to(this, 3, { onComplete: function():void { switchUI(NORMAL_TYPE); }  });
				break;
		}
	}
	//==========================================================================
	//  Event handlers
	//==========================================================================
	protected function acceptHandler(event:QuestValueEvent):void
	{
		data.removeEventListener(QuestValueEvent.ACCEPT, acceptHandler);
		
		switchUI(NORMAL_TYPE);
	}
	
	protected function progressHandler(event:QuestValueEvent):void
	{
		switchUI(PROGRESS_TYPE);
	}
}
}


